﻿using System.Collections.Generic;
using System.Web.Mvc;

namespace Nop.Web.Framework.Mvc
{
    /// <summary>
    /// Base nopCommerce model
    /// MVC中的基础思想就是Model   模型
    /// NOP中对自己的模型设计  提供了自己的模型绑定器
    /// 提供模型基类  所有的派生类均可以使用特定的Binder进行与视图的绑定工作
    /// 
    /// 注意：NOP中的数据交互使用的是EF的CodeFirst模式，基于Entity的设计思想，所谓的实体是有特定关联关系的
    /// 业务对象，领域模型在ORM思想中充分体现。所有 实体 Entity负责数据库交互，而Model
    /// 注意 是模型，用来实现MVC中的基础部分 Model  在控制器Controller和View中交互的数据载体
    /// </summary>
    public partial class BaseNopModel
    {
        public BaseNopModel()
        {
            this.CustomProperties = new Dictionary<string, object>();
        }

        /// <summary>
        /// 基于绑定到指定的控制器个模型绑定上下文
        /// </summary>
        /// <param name="controllerContext"></param>
        /// <param name="bindingContext"></param>
        public virtual void BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
        }

        /// <summary>
        /// Use this property to store any custom value for your models. 
        /// 自定的属性
        /// </summary>
        public Dictionary<string, object> CustomProperties { get; set; }
    }

    /// <summary>
    /// Base nopCommerce entity model
    /// 抽象出来的模型类 所有的Model类均有Id属性
    /// </summary>
    public partial class BaseNopEntityModel : BaseNopModel
    {
        public virtual int Id { get; set; }
    }
}
